package com.wen.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wen.common.dto.LoginDTO;
import com.wen.common.dto.UserAddressDTO;
import com.wen.common.dto.UserDTO;
import com.wen.common.utils.ResponseResult;
import com.wen.common.pojo.system.Permission;
import com.wen.common.pojo.system.Role;
import com.wen.common.pojo.system.User;

import java.util.List;
import java.util.Set;

public interface UserService {
    User findUserByName(String name);
    // 新增用户 （新增的用户带肯定带有角色？id是自增的 添加的时候还不确定id呢，怎么绑定角色？）
    int insertUser(User user);

    // 修改
    int update(User user);

    // 通过id查找用户
    User getUserById(Long id);

    // 分页查询用户，用户带有权限。所以用UserDto
    Page<UserDTO> findUserPage(int pageNum, int pageSize, String search);
    Page<UserDTO> findUserPage(Integer pageNum, Integer pageSize, UserDTO userdto);

//    Page<UserDTO> findUserPage(Integer pageNum, Integer pageSize, UserDTO userdto);

    User login(LoginDTO loginDTO);

    ResponseResult<?> modifyUserLockTime(int lockTime);

    ResponseResult<?> modifyUserLockNum(int lockNum);

    // 用户地址统计
    List<UserAddressDTO> countByAddress();

    // 根据用户id查角色名
    Set<String> getRoleNameByUserId(Long id);
    /**通过用户id查权限菜单*/
    List<Permission> getPermissionByUserId(Long id);

    List<Role> getRoleByUserId(Long userId);

    /**
     * 改变用户角色
     */
    ResponseResult<?> changeUserRole(UserDTO userDTO);

    ResponseResult<?> deleteBatch(List<Long> ids);

    String createQrImg();
}
